home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-12-03 | 2.7 KB | 135 lines | [TEXT/PJMM] |
- unit MyOOAboutHelp;
-
- interface
-
- uses
- MyOOMainLoop;
-
- type
- VerObject = object(DObject)
- global_object: ^WObject;
- text, styles: handle;
- procedure Create (id: integer);
- override;
- procedure Destroy;
- override;
- procedure DrawTextData;
- end;
-
- procedure InitOOAboutHelp (var obj: VerObject);
- procedure DoAboutHelp (var obj: VerObject; id: integer);
- procedure SetAboutHelpMenu (themenu, theitem: integer; obj: VerObject);
-
- implementation
-
- uses
- MyUtils, MyDialogs, MyStrings, MyVersionResource, MySystemGlobals;
-
- const
- text_item = 3;
-
- procedure DrawTextItem (dlg: dialogPtr; item: integer);
- begin
- VerObject(GetWObject(dlg)).DrawTextData;
- end;
-
- procedure VerObject.DrawTextData;
- var
- te: TEHandle;
- r: rect;
- begin
- GetDItemRect(window, text_item, r);
-
- te := TEStylNew(r, r);
- HLock(text);
- TEStylInsert(text^, GetHandleSize(text), StScrpHandle(styles), te);
- HUnlock(text);
-
- TEUpdate(r, te);
- TEDispose(te);
- end;
-
- procedure VerObject.Create (id: integer);
- var
- s: str255;
- k: integer;
- h: handle;
- r: rect;
- te: TEHandle;
- add: integer;
- vers: versionRecord;
- begin
- text := nil;
- styles := nil;
- UseResFile(app_resfile);
- SetVersionParamText('');
- inherited Create(id);
- GetWTitle(window, s);
- GetVersion(vers);
- SPrintS3(s, s, vers.name, '', '');
- SetWTitle(window, s);
- SetPort(window);
- TextFont(geneva);
- GetDItem(window, text_item, k, h, r);
- if BAND(k, $7F) = userItem then begin
- text := GetResource('TEXT', id);
- if text <> nil then begin
- HNoPurge(text);
- styles := GetResource('styl', id);
- HNoPurge(styles);
-
- te := TEStylNew(r, r);
- HLock(text);
- TEStylInsert(text^, GetHandleSize(text), StScrpHandle(styles), te);
- HUnlock(text);
- HPurge(text);
- HPurge(styles);
-
- add := r.top - r.bottom + TEGetHeight(0, te^^.nLines, te);
- TEDispose(te);
- r.bottom := r.bottom + add;
- SetDItem(window, text_item, k, HANDLE(@DrawTextItem), r);
- r := window^.portRect;
- SizeWindow(window, r.right - r.left, r.bottom - r.top + add, false);
- end;
- end;
- end;
-
- procedure VerObject.Destroy;
- begin
- global_object^ := nil;
- if text <> nil then
- ReleaseResource(text);
- if styles <> nil then
- ReleaseResource(styles);
- inherited Destroy;
- end;
-
- {$S Init}
- procedure InitOOAboutHelp (var obj: VerObject);
- begin
- obj := nil;
- end;
-
- {$S}
- procedure DoAboutHelp (var obj: VerObject; id: integer);
- begin
- if obj <> nil then begin
- if FrontWindow <> obj.window then
- SelectWindow(obj.window);
- end
- else begin
- new(obj);
- obj.global_object := @obj;
- obj.Create(id);
- ShowWindow(obj.window);
- end;
- end;
-
- procedure SetAboutHelpMenu (themenu, theitem: integer; obj: VerObject);
- begin
- SetIDItemEnable(themenu, theitem, not ISWObjectFront(obj));
- end;
-
-
- end.